安安~在嗎~各位大大~什麼!這種梗透露年齡了嗎~該不會大家都千禧年之後出生的吧
 ~趕快開始今天的內容吧~
~趕快開始今天的內容吧~
先建立一個 dag 用於顯示目前的 library 版本,要顯示的 library 有 requesets 和 pytest
劇透一下~ 這兩個都是後面專案會用到的模組
import requests
import pytest
from datetime import datetime
from airflow.decorators import dag, task
@dag(schedule=None, start_date=datetime(2023, 10, 3), catchup=False)
def show_module_version():
    @task
    def show_version():
        return {"requests version": requests.__version__, "pytest version": pytest.__version__ }
    show_version()
show_module_version()
Before Install Library@dag、@task,可以 🎵 回憶過去 🎵 :
docker-compose.yaml注意:airflow 2.1.1之後才可以用
_PIP_ADDITIONAL_REQUIREMENTS: ${_PIP_ADDITIONAL_REQUIREMENTS:-}
.env 環境變數--docker-airflow
    |__dags/
    |__logs/
    |__plugins/
    |__config/
    |__docker-compose.yaml
    |__.env
在.env當中加入環境變數設定
_PIP_ADDITIONAL_REQUIREMENTS=pytest==7.3.2
docker-compose up -d
官方提醒: 建議不要將 _PIP_ADDITIONAL_REQUIREMENTS 用於正式環境,僅用於開發的功能。

有發現我們根本沒安裝 requests 模組嗎,怎麼沒有 error,因為 requests 模組在我們安裝 airflow 時就已經安裝了,如果想知道安裝 airflow 到底還安裝哪些模組,可以進到 docker container 當中執行 pip list 就可以看到了~
--docker-airflow
    |__dags/
    |__logs/
    |__plugins/
    |__config/
    |__docker-compose.yaml
    |__Dockerfile
    |__requirements.txt
pytest==7.4.2
requests==2.31.0
pip install 安裝 requirements.txt 裡面的 library 和指定的版本FROM apache/airflow:2.7.1
COPY requirements.txt .
RUN pip install -r requirements.txt
記得 apache/airflow:2.7.1 的版本號要換成你自己的喔~
將在 image: XXX 下方的 # build:  註解打開,把上方的 image: XXX 註解起來
version: '3.8'
x-airflow-common:
  &airflow-common
  image: ${AIRFLOW_IMAGE_NAME:-apache/airflow:2.7.1}
  # build: .
  environment:
上面↑ 要修改成 下面↓
version: '3.8'
x-airflow-common:
  &airflow-common
  #image: ${AIRFLOW_IMAGE_NAME:-apache/airflow:2.7.1}
  build: .
  environment:
代表沒有要用 image: XXX 這個 image 建立 Container,要使用自訂的 Dockerfile 設定 Image 建立 Container,. 代表使用當前 Dockerfile 所在的路徑。
docker-compose up -d
docker-compose 會從 Dockerfile 重新建立 Image,再 create 新的 docker 容器
docker-compose build --no-cache
有發現我故意在方法一:設定 _PIP_ADDITIONAL_REQUIREMENTS安裝 pytest 之前的版本,這樣方法二:使用 Dockerfile安裝完才看得出來啊~
這樣回答不知道拿不拿的到 20 點 ~
~
明天終於要來講 airflow 的 schedule 排程和時間問題了,這個我覺得有很多「坑」的主題~
方法二 : docker-compose 如果跑到「記憶體不足」,代表 docker Desktop 資源需要再開大一點 ~
~